GSB 544: Computing and Machine Learning for Business Analytics

Contact

Dr. Hunter Glanz

Office Hours

Day Time
Mondays 10:10am-12pm (Zoom by default)
Wednesdays 10:10-12pm (Zoom by default)

Zoom office hours by appointment are required to be scheduled at least 4-hours prior to the meeting (https://calendly.com/hglanz/office-hours).

Other days/times are available by appointment via email or direct message.

If you’d like to visit me in my office in person, please email or direct message me ahead of time.

Dr. Kelly Bodwin

Office Hours

Day Time
Tuesdays 12:10pm - 1:30pm, in-person (25-106)
Wednesdays 11:10am - 12:00pm, in-person (25-106)
Thursdays 9:40pm - 11:00pm, in-person (25-106)
Bonus times variable, remote by appt (https://calendly.com/kbodwin/office-hours-remote)

Zoom office hours by appointment are required to be scheduled at least 12-hours prior to the meeting.

Course Discord:

For questions of general interest, such as course clarifications or conceptual questions, please use the course Discord page (you will join this Week 1). I encourage you to give your post a concise and informative initial sentence, so that other people can find it. For example, “How do I color bars in a barplot with plotnine?” is a better opening sentence than “help with plotting”.

While your posts are not anonymous, in this case there is no such thing as a bad question! This is the best way to get a quick answer, from me or maybe even from a classmate, and your questions almost certainly help out classmates struggling with similar issues. (In fact, if you send me an email or private message with a non-private question, I will probably answer it on Discord instead!)

Course Info

Class Meeting Times:

Section 02 (Dr. Glanz): Mon/Weds 8:10am - 10:00am

Room:

Section 01 (Dr. Bodwin): Mon/Weds 2:10pm - 4:00pm

Room:

Course Description

GSB 544 provides you with an introduction to programming in python for data analysis and predictive learning.

After taking this course, you will be able to:

  • Work with jupyter notebooks in an IDE, Google Colab, and quarto rendering.
  • Import, manage, and clean data from a wide variety of data sources.
  • Visualize and summarize data for informative exploratory data analysis and presentations.
  • Program functions to streamline your coding tasks.
  • Fit a variety of predictive models and validate/compare them through cross-validation.

Additionally, it is my hope that you will learn to:

  • Extend your python skills independently through documentation and online resources.
  • Be thoughtful, deliberate, and ethical in your use of python and similar tools.
  • Use python to be playful, creative, and fun!
  • Contribute to and participate in the Open Source Community.

Course Resources

Textbook

There is no single textbook for this class, beyond the provided course materials. References or additional readings may come from the following texts:

For extra practice with python programming, we recommend the DataQuest interactive tutorials or working through some lessons on Python for Everybody.

Equipment

Chromebooks, iPads, and some very old model laptops will not be sufficient to install python. You do have the alternate option to make an account on Posit Cloud and run python on a remote server via the internet. However, I recommend against this - it gives you a bit less control over your workspace, the computing power on the free tier is limited, and it means you can only do your programming with an internet connection.

If this requirement is limiting for you, please contact me ASAP.

Class Schedule & Topic Outline

This schedule is tentative and subject to change.

Tentative schedule of class topics and important due dates
Date Topic
Sep 23, Sep 25 Introduction to python and plotting
Sep 30, Oct 2 Data Wrangling
Oct 7, Oct 9 Functional Programming
Oct 14, Oct 16 Webscraping
Oct 21 Review
Oct 23 Written Exam 1
Oct 28, Oct 30 Regression and Model Fitting
Nov 4, Nov 6 Penalization and Cross-Validation
Nov 13 Non-Parametric Methods and Classification
Nov 18, Nov 20 Linear Classifiers and Perceptrons
Dec 2 Neural Networks
Dec 4 Written Exam 2

Course Policies

Assessment/Grading

Your grade in GSB 544 will contain the following components:

Assignments Weight
Practice Activities 15%
Lab Assignments 30%
Written Exam 1 15%
Written Exam 2 15%
Take-Home Final 15%
Project 10%

Lower bounds for grade cutoffs are shown in the following table. I sometimes “round up” grades at the end of the quarter, but no promises; treat these cutoffs as if they are hard boundaries, and don’t put yourself in a position to be close-but-not-quite!

Letter grade X + X X -
A . 93 90
B 87 83 80
C 77 73 70
D 67 63 60
F <60

Interpretation of this table:

  • A grade of 85 will receive a B.
  • A grade of 77 will receive a C+.
  • A grade of 70 will receive a C-.
  • Anything below a 60 will receive an F.

General Evaluation Criteria

In every assignment, discussion, and written component of this class, you are expected to demonstrate that you are intellectually engaging with the material and that you understand the code you are writing.

I will evaluate you based on this engagement, which means that technically correct answers that do not demonstrate your understanding will receive no credit.

This is not to encourage you to add unnecessary complexity to your answer - simple, elegant solutions are always preferable to unwieldly, complex solutions that accomplish the same task. I am simply looking for you to apply your own ideas and thought process to the task, and not solely rely on online resources or guess-and-check code tweaking to arrive at working code.

Grammar and spelling are not part of your grade, but your ability to communicate technical information clearly in writing is. Your work will be evaluated not just on the correctness of the code, but also on how successfully you articulate the goals and interpretations.

Assignment Breakdown

Practice Activities

Most weeks, you will be given a Practice Activity to complete, to get the hang of the week’s necessary python skills. In Unit 1, these activities will always result in a single, straightforward correct answer, that you will submit via Canvas. In Unit 2, you will be asked to do a single predictive modeling task. There is no reason you should not get full credit in this category!

Since these activities are intended to be your first attempt at new skills, they are meant to be done with help from me and your peers. Therefore, you will always be given some time in class to work on them. I strongly suggest that you attempt to start the activities before class, so you can maximize the utility of your in-class time.

  • Practice Activities are due Fridays at 11:59pm.

Lab Assignments

Your typical homework assignments will be weekly labs. You will follow each lab’s instructions to complete tasks in python and submit a knitted .html quarto document to Canvas.

Most weeks, there will be some class time dedicated to working on completing lab assignments.

  • Labs are due on the following Mondays at 11:59pm.

Attendance & Participation

We do not take formal attendance in this class. However, it is our expectation that you remain in class and on task until you have finished all your activities and assignments. Consistent, repeated failure to attend class or actively participate in portions of the course will affect the demonstration of your engagement with the course.

If you are feeling ill, please do not come to class. Instead, review the material and work on the practice activity and weekly lab assignment; then schedule an appointment to meet virtually if you need it.

Late Policy

  • Practice Activities are essentially class participation points. Therefore, no late Practice Activities will be accepted for credit.

  • For Lab work, Canvas will automatically apply a 10% grade deduction for each day past the due date. The minimum grade for (complete) late work is 50%. This means it is always worth it to go back and catch up on a Lab you missed, even if many weeks have passed!

Auto-extensions

We know that sometimes life gets in the way of your academic plans, and we do not want to be in the position of deciding whose extenuating circumstances qualify for extensions.

Therefore, we offer everyone three auto-extensions for the quarter. To take this auto-extension, you must fill out the Google Form linked on Canvas at least 24 hours before the assignment deadline.

No other extension request (e.g. by email, in person, by Discord) will be honored for any reason.

This policy does not apply to Exams or the Final Project, which of course may not be turned in late.

Make Mistakes!

Programming is the process of making a series of silly or stupid mistakes, and then slowly fixing each mistake (while adding a few more). The only way to know how to fix these mistakes (and avoid them in the future) is to make them. (Sometimes, you have to make the same mistake a few dozen times before you can avoid it in the future). At some point during the class, you will find that you’ve spent 30 minutes staring at an error caused by a typo, a space, a parenthesis in the wrong place. You may ask for help debugging this weird error, only to have someone immediately point out the problem… it is always easier to see these things in someone else’s code. This is part of programming, it is normal, and you shouldn’t feel embarrassed or sorry (unless you put no effort into troubleshooting the problem before you asked for help)

If you manage to produce an error we haven’t seen before, that’s exciting! Your creativity has achieved something new, and that achievement should be celebrated. Each fresh bizarre error is an opportunity to learn a bit more about the programming language, the operating system, or the interaction between the two.

University Policies

See academicprograms.calpoly.edu/content/academicpolicies.

Learning Environment and Support

We believe everyone is capable of learning statistics and programming with proper support. It is my goal for everyone to feel safe and comfortable in my classroom. If there is any way we can make the course more welcoming for you, please do not hesitate to ask.

In particular, if you have a disability, we will gladly work with you to make this class accessible.

We encourage you to also contact the Disability Resource Center (Building 124, Room 119 or at 805-756-1395), who can help you register for extra accommodations such as extended exam time.

If you are having difficulty affording groceries, lacking a safe & stable place to live, or needing additional essential supports, please see Canvas for a list of Student Support Services at Cal Poly.

Academic Integrity and Class Conduct

Simply put, we will not tolerate cheating or plagiarism.

Any incident of dishonesty, copying, exam cheating, or plagiarism will be reported to the Office of Student Rights and Responsibilities.

Cheating will earn you a grade of 0 on the assignment and an overall grade penalty of at least 10%. In circumstances of flagrant cheating, you may be given a grade of F in the course.

Paraphrasing or quoting another’s work without citing the source is a form of academic misconduct. This includes the code produced by someone else! Writing code is like writing a paper, it is obvious if you copied-and-pasted a sentence from someone else into your paper because the way each person writes is different.

Even inadvertent or unintentional misuse or appropriation of another’s work (such as relying heavily on source material that is not expressly acknowledged) is considered plagiarism. If you are struggling with writing the R code for an assignment, please reach out to me. We would prefer that we get to help you rather than you spending hours Googling things and get nowhere!

If you have any questions about using and citing sources, you are expected to ask for clarification.

For more information about what constitutes cheating and plagiarism, please see academicprograms.calpoly.edu/content/academicpolicies/Cheating.

AI/Chat GPT

The introduction of tools like Chat GPT is exciting for teaching and learning, but it comes with a whole new set of complicated questions about academic integrity.

Our class policy is that AI tools should be treated like a human tutor. Asking the AI for help understanding concepts, pointers towards useful functions or resources, or help debugging your code? Totally fine; in fact, we encourage you to try this out! Asking the AI to directly write your code or text for you? Not okay.

And of course, AI tools should not be accessed in exam settings.